The present invention relates to a navigation manager component operable in the presentation of user interfaces.
Many interactive computer software applications present portions of their user interfaces according to user interface representations of various kinds. These representations may be stored on the computer""s storage devices, or may be created as needed by some other part of an application. Traditionally, these representations have been either linear or tabular, and have typically corresponded directly to the way in which the user interface is presented on the particular input/output devices attached to a predefined type of computer system chosen in advance by the application developer.
U.S. Pat. No. 5,327,529 assigned to Geoworks Corporation discloses separating specific user interface implementations from a generic specification of a user interface. Although making no mention of the more recently developed Extensible Mark-up Language (XML), Geoworks does disclose an interpreter cooperable with a user interface controller, where the interpreter selects a specific user interface implementation from a selection of possible specific user interface implementations, such that a selected specific user interface implementation satisfies both specified attribute criteria and hint criteria. If no specific user interface implementation satisfies both the attribute criteria and hint criteria, then the interpreter selects a specific user interface implementation that satisfies the attribute criteria but not all of the hint criteria.
With the increasing use of XML to represent structured data to be exchanged between different systems or parts of a system, applications can make use of an XML hierarchical representation of the user interface xe2x80x9cXML UI representationxe2x80x9d) written according to a suitable set of XML definitions. An example of such a set of definitions is disclosed in co-pending U.S. Pat. No. application Ser. No. 09/321,700 and Appendix A show an example of an XML UI representation where the reference file, DRUID.dtd, includes the set of definition for the UI representation. The definitions provided encompass various types of data entry which the user may wish to perform, together with means of aggregating those representations into a hierarchical structure. The definitions also allow the circumstances under which an item is eligible for presentation to the user, and the circumstances under which the data entry for the item can be considered complete, and thus ready to be accepted by the application, to be specified in the representation.
A notable feature of the co-pending application, is that the XML UI representation is not intended to reflect the presentation that might take place on any particular input/output device, rather that applications are intended to operate with platform specific renderers which are responsive to a common user interface definition to present the user interface suitably on respective devices with widely differing characteristics. For example, an application or its user interface renderer component xe2x80x9crendererxe2x80x9d may present a given user interface on the screen of a traditional desktop personal computer, or on the smaller screen of a palmtop personal organiser device, or on the extremely limited screen of a mobile telephone handset. Presentation may even take place via speech which is produced by a voice response unit across a telephone connection, and thus have no visual presentation portion at all.
Each device or hardware environment will have different presentation capabilities, and will therefore require a different concept of presentation granularity. For example, the personal computer may have the luxury of a relatively large display area on which to present items, allowing it to group many related items together for simultaneous display. Thus, on personal computer displays, a renderer might present the user interface as a sequence of pages, each containing one or more items, with user-selectable choices to move forwards and backwards through the pages, and indeed this is a presentation style which is frequently used by today""s desktop personal computer applications. The palmtop device may be significantly more constrained in display area, and so may wish to present fewer items simultaneously. The mobile telephone display and the voice response unit will probably both be so constrained that they are able to present just one item at a time.
It is conceded that the organisation of a hierarchical user interface representation into a linear sequence of units of a particular size is usually supported to some extent by the user interface tool kits available for each device or hardware environment. However, in order for an application, or its renderer, to be able to present a user interface on many different devices and hardware environments, the application must be able to adapt the UI representation into many different linear sequences of units, with the units comprising different sizes of portions of the UI representation according to the capabilities of the hardware, and still be able to manage the navigation forwards and backwards through this sequence in the appropriate manner. It is a complex task to take into account the required forwards and backwards navigation schemes and the eligibility of the items and the completeness of data entry into the items, and also to detect changes in the availability of forwards navigation and backwards navigation, when it is not known in advance how many units there will be, and which units will contain which items.
The present invention provides a navigation manager component cooperable with a renderer adapted to operate a user interface having a hierarchical representation, said hierarchical representation comprising a plurality of items at least some of said items being adapted to contain one or more child items, and at least some of said items being conditionally eligible for display according to the state of another item, each item having a set of attributes indicating:the identity of any parent item of the item; whether the item is eligible for presentation, in that if one or more conditions are specified which determine when the item is to be considered eligible then the or each condition is satisfied; and whether data entry for the item is complete, said navigation manager being adapted to manage an ordered sequence of one or more navigation units, each navigation unit representing one or more items in said hierarchical representation and comprising: means for maintaining a navigation unit cursor identifying one of said navigation units managed by the navigation manager to be the current navigation unit; means for determining if forward navigation is available, comprising means for searching for any navigation unit after the current navigation unit in the sequence representing one or more eligible items, means for determining if the current navigation unit is complete and means for determining if all eligible completable items represented by previous navigation units are complete; means for determining if backwards navigation is available, comprising means for searching for any navigation unit before the current navigation unit representing one or more eligible items; means, responsive to user selection of forwards navigation within said rendered user interface, for updating said navigation unit cursor to be the next eligible navigation unit in said sequence in accordance with the results provided by said means for determining if forward navigation is available; and means, responsive to user selection of backwards navigation within said rendered user interface, for updating said navigation unit cursor to be the previous eligible navigation unit in said sequence in accordance with the results provided by said means for determining if backwards navigation is available.
So in spite of the fact that an application or its renderer is largely tied to the platform on which it operates, and in spite of the fact that navigation may differ for the same application on different platforms, for different applications on the same platform and even from time to time within a given application, the invention provides a platform- and application-independent navigation manager, cooperable with a renderer, or at least that portion of an application, handling a hierarchical UI representation.
In the preferred embodiment, the application or its renderer initially defines a sequence of user interface units, each comprising a portion of the total UI representation with the sizes of those portions ranging from large sections of the overall structure in the case of a personal computer display to single items in the case of the mobile telephone display or voice response unit.
A navigation unit component thus represents a portion of the user interface representation being one or more items from the user interface representation which are to be presented simultaneously. By establishing the relevant properties of the items which it contains, the navigation unit component is able to determine at any time whether any of the items which it contains are eligible for presentation, and whether data entry for any of the items which it contains is incomplete.
The navigation manager manages navigation forwards and backwards through the sequence of navigation units in response to user requests, in order that the user is able to work with the whole user interface by having the various units presented at the appropriate times. The navigation manager determines the required forwards and backwards navigation schemes, including situations where backwards navigation is not a simple inverse of forwards navigation. For example, if the hierarchical UI representation has items organised into several groups of closely related items, and the hardware constraints mean that each group is too large to be represented by a single unit and thus will require several units to represent it, then backwards navigation from the first unit representing one of the later groups may more appropriately yield the first unit of the preceding group, which might establish the user interface context of that preceding group, rather than yielding the last unit of the preceding group, even though that unit is probably the origin of the forwards navigation which yielded the current unit. In this case, the required forwards and backwards navigation schemes are determined according to the structure of the UI representation as well as the sequence of the user interface units in order to produce a satisfactory system of navigation for the user.
Preferably, the navigation manager takes into account which items are eligible for presentation to the user at any time, in order to avoid presenting units in which all the items are ineligible for presentation. It also takes into account which items are items for which the data entry is incomplete, in order to be able to encourage the user to complete data entry for those items before proceeding forwards. Furthermore, forwards navigation will not always be available because there may be no further units in the forwards navigation direction, or all the further units in the forwards navigation direction may be units in which all the items are ineligible for presentation, or there may be items in the current unit for which data entry is incomplete. Similarly, backwards navigation will not always be available because there may be no further units in the backwards navigation direction, or all the further units Was in the backwards navigation direction may be units in which all the items are ineligible for presentation. Thus, when an application is to provide user interface affordances to enable the user to make navigation requests such as forwards navigation and backwards navigation, the navigation manager enables the application to make those affordances available or unavailable from time to time, as forwards navigation and backwards navigation become available or unavailable. Since the eligibility of items and the completeness of data entry into items will typically change at any moment due to user data entry via the user interface, any consequent changes in the availability of forwards navigation and backwards navigation can be reflected immediately in the availability of the corresponding user interface affordances whenever it is feasible to do so.